class A():
    def __init__(self) -> None:
        self.values = [1,2,3]
        self.current = 0
    def __iter__(self):
        self.current = 0                        #  ！创建迭代器的时候，必须要重置，
        return self
    def __next__(self):                         #  ！在自身实现迭代器
        if self.current > len(self.values)-1:
            raise StopIteration                 #  ！停止迭代这个异常 会被捕获
        value = self.values[self.current]
        self.current +=1
        return value

a = A()
for i in a:            # for 语境下， 会调用__iter__方法， 获取a的迭代器，并调用__next__ 方法获取下一个元素
    print(i)
for i in a:
    print(i)
